home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / wdasm13.zip / HELLO1.ASM < prev    next >
Assembly Source File  |  1993-01-14  |  20KB  |  1,165 lines

  1.         TITLE    WDASM Example Program
  2.         .286
  3.         .MODEL    SMALL
  4.  
  5.         INCLUDE    HELLO2.INC
  6.  
  7.         EXTRN        DefWindowProc:FAR
  8.         EXTRN        GetMessage:FAR
  9.         EXTRN        TranslateMessage:FAR
  10.         EXTRN        FatalExit:FAR
  11.         EXTRN        DispatchMessage:FAR
  12.         EXTRN        GetVersion:FAR
  13.         EXTRN        GetDosEnvironment:FAR
  14.         EXTRN        LocalAlloc:FAR
  15.         EXTRN        LocalRealloc:FAR
  16.         EXTRN        LocalFree:FAR
  17.         EXTRN        FatalAppExit:FAR
  18.         EXTRN        LocalSize:FAR
  19.         EXTRN        UpdateWindow:FAR
  20.         EXTRN        GlobalRealloc:FAR
  21.         EXTRN        GlobalSize:FAR
  22.         EXTRN        InitApp:FAR
  23.         EXTRN        PostQuitMessage:FAR
  24.         EXTRN        LockSegment:FAR
  25.         EXTRN        UnlockSegment:FAR
  26.         EXTRN        WaitEvent:FAR
  27.         EXTRN        GetClientRect:FAR
  28.         EXTRN        GetModuleFileName:FAR
  29.         EXTRN        BeginPaint:FAR
  30.         EXTRN        EndPaint:FAR
  31.         EXTRN        CreateWindow:FAR
  32.         EXTRN        ShowWindow:FAR
  33.         EXTRN        LoadCursor:FAR
  34.         EXTRN        LoadIcon:FAR
  35.         EXTRN        RegisterClass:FAR
  36.         EXTRN        InitTask:FAR
  37.         EXTRN        GetStockObject:FAR
  38.         EXTRN        DrawText:FAR
  39.         EXTRN        Dos3Call:FAR
  40.  
  41.         EXTRN        __winflags:FAR
  42.  
  43.         .CODE
  44.  
  45. Procedure0000    PROC    NEAR
  46.         ADD    BYTE PTR [BX+SI], AL
  47.         ADD    BYTE PTR [BX+SI], AL
  48.         ADD    BYTE PTR [BX+SI], AL
  49.         ADD    BYTE PTR [BX+SI], AL
  50.         ADD    BYTE PTR [BX+SI], AL
  51.         ADD    BYTE PTR [BX+SI], AL
  52.         ADD    BYTE PTR [BX+SI], AL
  53.         ADD    BYTE PTR [BX+SI], AL
  54. Procedure0000    ENDP
  55.  
  56. Procedure0010    PROC    NEAR
  57.         ENTER    002EH, 0
  58.         CMP    WORD PTR [BP+10], 0
  59.         JZ     L001DH
  60.         JMP    NEAR PTR L0085H
  61. L001DH:        MOV    WORD PTR [BP-46], 0003H
  62.         MOV    WORD PTR [BP-44], OFFSET WNDPROC
  63.         MOV    WORD PTR [BP-42], SEG WNDPROC
  64.         MOV    WORD PTR [BP-40], 0000H
  65.         MOV    WORD PTR [BP-38], 0000H
  66.         MOV    AX, WORD PTR [BP+12]
  67.         MOV    WORD PTR [BP-36], AX
  68.         PUSH    0
  69.         PUSH    0
  70.         PUSH    7F00H
  71.         CALL    FAR PTR LoadIcon
  72.         MOV    WORD PTR [BP-34], AX
  73.         PUSH    0
  74.         PUSH    0
  75.         PUSH    7F00H
  76.         CALL    FAR PTR LoadCursor
  77.         MOV    WORD PTR [BP-32], AX
  78.         PUSH    0
  79.         CALL    FAR PTR GetStockObject
  80.         MOV    WORD PTR [BP-30], AX
  81.         MOV    WORD PTR [BP-28], 0000H
  82.         MOV    WORD PTR [BP-26], 0000H
  83.         MOV    AX, 0010H
  84.         MOV    DX, DS
  85.         MOV    WORD PTR [BP-24], AX
  86.         MOV    WORD PTR [BP-22], DX
  87.         LEA    AX, WORD PTR [BP-46]
  88.         MOV    DX, SS
  89.         PUSH    DX
  90.         PUSH    AX
  91.         CALL    FAR PTR RegisterClass
  92. L0085H:        MOV    AX, 0010H
  93.         MOV    DX, DS
  94.         PUSH    DX
  95.         PUSH    AX
  96.         MOV    AX, 00B0H
  97.         MOV    DX, DS
  98.         PUSH    DX
  99.         PUSH    AX
  100.         PUSH    00CFH
  101.         PUSH    0
  102.         PUSH    8000H
  103.         PUSH    8000H
  104.         PUSH    8000H
  105.         PUSH    8000H
  106.         PUSH    0
  107.         PUSH    0
  108.         PUSH    WORD PTR [BP+12]
  109.         PUSH    0
  110.         PUSH    0
  111.         CALL    FAR PTR CreateWindow
  112.         MOV    WORD PTR [BP-2], AX
  113.         PUSH    AX
  114.         PUSH    WORD PTR [BP+4]
  115.         CALL    FAR PTR ShowWindow
  116.         PUSH    WORD PTR [BP-2]
  117.         CALL    FAR PTR UpdateWindow
  118. L00C8H:        LEA    AX, WORD PTR [BP-20]
  119.         MOV    DX, SS
  120.         PUSH    DX
  121.         PUSH    AX
  122.         PUSH    0
  123.         PUSH    0
  124.         PUSH    0
  125.         CALL    FAR PTR GetMessage
  126.         AND    AX, AX
  127.         JZ     L00F8H
  128.         LEA    AX, WORD PTR [BP-20]
  129.         MOV    DX, SS
  130.         PUSH    DX
  131.         PUSH    AX
  132.         CALL    FAR PTR TranslateMessage
  133.         LEA    AX, WORD PTR [BP-20]
  134.         MOV    DX, SS
  135.         PUSH    DX
  136.         PUSH    AX
  137.         CALL    FAR PTR DispatchMessage
  138.         JMP    SHORT L00C8H
  139. L00F8H:        MOV    AX, WORD PTR [BP-16]
  140.         LEAVE
  141.         RET    000AH
  142. Procedure0010    ENDP
  143.  
  144.  
  145. Procedure00FF    PROC    NEAR
  146.         NOP
  147. Procedure00FF    ENDP
  148.  
  149. WNDPROC    PROC    FAR PUBLIC
  150.         PUSH    DS
  151.         POP    AX
  152.         NOP
  153.         INC    BP
  154.         PUSH    BP
  155.         MOV    BP, SP
  156.         PUSH    DS
  157.         MOV    DS, AX
  158.         SUB    SP, 002CH
  159.         PUSH    SI
  160.         PUSH    DI
  161.         MOV    SI, WORD PTR [BP+14]
  162.         MOV    AX, WORD PTR [BP+12]
  163.         JMP    NEAR PTR L0172H
  164.         NOP
  165. L011AH:        PUSH    SI
  166.         LEA    AX, WORD PTR [BP-36]
  167.         MOV    DX, SS
  168.         PUSH    DX
  169.         PUSH    AX
  170.         CALL    FAR PTR BeginPaint
  171.         MOV    DI, AX
  172.         PUSH    SI
  173.         LEA    AX, WORD PTR [BP-44]
  174.         MOV    DX, SS
  175.         PUSH    DX
  176.         PUSH    AX
  177.         CALL    FAR PTR GetClientRect
  178.         PUSH    DI
  179.         MOV    AX, 00BEH
  180.         MOV    DX, DS
  181.         PUSH    DX
  182.         PUSH    AX
  183.         PUSH    -1
  184.         LEA    AX, WORD PTR [BP-44]
  185.         MOV    DX, SS
  186.         PUSH    DX
  187.         PUSH    AX
  188.         PUSH    37
  189.         CALL    FAR PTR DrawText
  190.         PUSH    SI
  191.         LEA    AX, WORD PTR [BP-36]
  192.         MOV    DX, SS
  193.         PUSH    DX
  194.         PUSH    AX
  195.         CALL    FAR PTR EndPaint
  196.         XOR    AX, AX
  197.         XOR    DX, DX
  198.         JMP    SHORT L0197H
  199.         NOP
  200. L0162H:        PUSH    0
  201.         CALL    FAR PTR PostQuitMessage
  202.         XOR    AX, AX
  203.         XOR    DX, DX
  204.         JMP    SHORT L0197H
  205.         NOP
  206.         JMP    SHORT L017FH
  207. L0172H:        CMP    AX, 0002H
  208.         JZ     L0162H
  209.         CMP    AX, 000FH
  210.         JNZ    L017FH
  211.         JMP    NEAR PTR L011AH
  212. L017FH:        PUSH    SI
  213.         PUSH    WORD PTR [BP+12]
  214.         PUSH    WORD PTR [BP+10]
  215.         PUSH    WORD PTR [BP+8]
  216.         PUSH    WORD PTR [BP+6]
  217.         CALL    FAR PTR DefWindowProc
  218.         JMP    SHORT L0197H
  219.         NOP
  220.         MOV    WORD PTR [BP+14], SI
  221. L0197H:        POP    DI
  222.         POP    SI
  223.         SUB    BP, 2
  224.         MOV    SP, BP
  225.         POP    DS
  226.         POP    BP
  227.         DEC    BP
  228.         RETF    000AH
  229. WNDPROC    ENDP
  230.  
  231.  
  232. Procedure01A4    PROC    NEAR
  233. L01A4H        DW    OFFSET __winflags
  234. L01A6H:        MOV    AL, -1
  235.         PUSH    AX
  236.         CALL    NEAR PTR Procedure0346
  237. L01ACH::    XOR    BP, BP
  238.         PUSH    BP
  239.         CALL    FAR PTR InitTask
  240.         OR    AX, AX
  241.         JZ     L01A6H
  242.         MOV    WORD PTR D0054H, ES
  243.         ADD    CX, 0100H
  244.         JB     L01A6H
  245.         MOV    WORD PTR D001EH, CX
  246.         MOV    WORD PTR D0020H, SI
  247.         MOV    WORD PTR D0022H, DI
  248.         MOV    WORD PTR D0024H, BX
  249.         MOV    WORD PTR D0026H, ES
  250.         MOV    WORD PTR D0028H, DX
  251.         CALL    FAR PTR GetVersion
  252.         MOV    WORD PTR D0056H, AX
  253.         MOV    AH, 48
  254.         TEST    WORD PTR CS:L01A4H, 0001H
  255.         JZ     L01F4H
  256.         CALL    FAR PTR Dos3Call
  257.         JMP    SHORT L01F6H
  258. L01F4H:        INT    0021H
  259. L01F6H:        MOV    WORD PTR D0058H, AX
  260.         TEST    WORD PTR CS:L01A4H, 0001H
  261.         JNZ    L0207H
  262.         MOV    AL, 0
  263.         MOV    BYTE PTR D005BH, AL
  264. L0207H:        XOR    AX, AX
  265.         PUSH    AX
  266.         CALL    FAR PTR WaitEvent
  267.         PUSH    WORD PTR D0022H
  268.         CALL    FAR PTR InitApp
  269.         OR    AX, AX
  270.         JZ     L01A6H
  271.         CALL    NEAR PTR Procedure0260
  272.         CALL    NEAR PTR Procedure0422
  273.         CALL    NEAR PTR Procedure05A0
  274.         CALL    NEAR PTR Procedure0800
  275.         PUSH    WORD PTR D0090H
  276.         PUSH    WORD PTR D008EH
  277.         PUSH    WORD PTR D008CH
  278.         CALL    NEAR PTR Procedure0244
  279.         ADD    SP, 6
  280.         PUSH    AX
  281.         CALL    NEAR PTR Procedure033F
  282.         MOV    AX, 0015H
  283.         JMP    NEAR PTR L0627H
  284. Procedure01A4    ENDP
  285.  
  286. Procedure0244    PROC    NEAR
  287.         PUSH    BP
  288.         MOV    BP, SP
  289.         PUSH    WORD PTR D0022H
  290.         PUSH    WORD PTR D0020H
  291.         PUSH    WORD PTR D0026H
  292.         PUSH    WORD PTR D0024H
  293.         PUSH    WORD PTR D0028H
  294.         CALL    NEAR PTR Procedure0010
  295.         POP    BP
  296.         RET
  297. Procedure0244    ENDP
  298.  
  299.  
  300. Procedure0260    PROC    NEAR
  301.         MOV    AX, 3500H
  302.         TEST    WORD PTR CS:L01A4H, 0001H
  303.         JZ     L0273H
  304.         CALL    FAR PTR Dos3Call
  305.         JMP    SHORT L0275H
  306. L0273H:        INT    0021H
  307. L0275H:        MOV    WORD PTR D0040H, BX
  308.         MOV    WORD PTR D0042H, ES
  309.         PUSH    CS
  310.         POP    DS
  311.         MOV    AX, 2500H
  312.         MOV    DX, 0622H
  313.         TEST    WORD PTR CS:L01A4H, 0001H
  314.         JZ     L0295H
  315.         CALL    FAR PTR Dos3Call
  316.         JMP    SHORT L0297H
  317. L0295H:        INT    0021H
  318. L0297H:        PUSH    SS
  319.         POP    DS
  320.         MOV    CX, WORD PTR D00A6H
  321.         JCXZ    L02C8H
  322.         MOV    ES, WORD PTR D0054H
  323.         MOV    SI, WORD PTR ES:D002CH
  324.         MOV    AX, WORD PTR D00A8H
  325.         MOV    DX, WORD PTR D00AAH
  326.         XOR    BX, BX
  327.         CALL    DWORD PTR D00A4H
  328.         JAE    L02BAH
  329.         JMP    NEAR PTR L041CH
  330. L02BAH:        MOV    AX, WORD PTR D00ACH
  331.         MOV    DX, WORD PTR D00AEH
  332.         MOV    BX, 0003H
  333.         CALL    DWORD PTR D00A4H
  334. L02C8H:        MOV    ES, WORD PTR D0054H
  335.         MOV    CX, WORD PTR ES:D002CH
  336.         JCXZ    L0311H
  337.         MOV    ES, CX
  338.         XOR    DI, DI
  339. L02D7H:        CMP    BYTE PTR ES:[DI], 0
  340.         JZ     L0311H
  341.         MOV    CX, 000DH
  342.         MOV    SI, 0032H
  343.         REPE CMPSB
  344.         JZ     L02F2H
  345.         MOV    CX, 7FFFH
  346.         XOR    AX, AX
  347.         REPNE SCASB
  348.         JNZ    L0311H
  349.         JMP    SHORT L02D7H
  350. L02F2H:        PUSH    ES
  351.         PUSH    DS
  352.         POP    ES
  353.         POP    DS
  354.         MOV    SI, DI
  355.         MOV    DI, 0064H
  356.         MOV    CL, 4
  357. L02FDH:        LODSB
  358.         SUB    AL, 65
  359.         JB     L030FH
  360.         SHL    AL, CL
  361.         XCHG    DX, AX
  362.         LODSB
  363.         SUB    AL, 65
  364.         JB     L030FH
  365.         OR    AL, DL
  366.         STOSB
  367.         JMP    SHORT L02FDH
  368. L030FH:        PUSH    SS
  369.         POP    DS
  370. L0311H:        MOV    SI, 00B0H
  371.         MOV    DI, 00B0H
  372.         CALL    NEAR PTR Procedure03E3
  373.         MOV    SI, 00B0H
  374.         MOV    DI, 00B0H
  375.         CALL    NEAR PTR Procedure03F2
  376.         MOV    SI, 00B0H
  377.         MOV    DI, 00B0H
  378.         CALL    NEAR PTR Procedure03E3
  379.         MOV    SI, 00B0H
  380.         MOV    DI, 00B0H
  381.         CALL    NEAR PTR Procedure03E3
  382.         MOV    SI, 00B0H
  383.         MOV    DI, 00B0H
  384.         CALL    NEAR PTR Procedure03F2
  385.         RET
  386. Procedure0260    ENDP
  387.  
  388.  
  389. Procedure033F    PROC    NEAR
  390.         PUSH    BP
  391.         MOV    BP, SP
  392.         XOR    CX, CX
  393.         JMP    SHORT L0360H
  394. Procedure033F    ENDP
  395.  
  396. Procedure0346    PROC    NEAR
  397.         PUSH    BP
  398.         MOV    BP, SP
  399.         MOV    CX, 0001H
  400.         JMP    SHORT L0360H
  401.         PUSH    BP
  402.         MOV    BP, SP
  403.         PUSH    SI
  404.         PUSH    DI
  405.         MOV    CX, 0100H
  406.         JMP    SHORT L0360H
  407.         PUSH    BP
  408.         MOV    BP, SP
  409.         PUSH    SI
  410.         PUSH    DI
  411.         MOV    CX, 0101H
  412. L0360H::    MOV    BYTE PTR D0099H, CH
  413.         PUSH    CX
  414.         OR    CL, CL
  415.         JNZ    L0385H
  416.         MOV    SI, 022CH
  417.         MOV    DI, 022CH
  418.         CALL    NEAR PTR Procedure03E3
  419.         MOV    SI, 00B0H
  420.         MOV    DI, 00B0H
  421.         CALL    NEAR PTR Procedure03E3
  422.         MOV    SI, WORD PTR [BP+4]
  423.         PUSH    SI
  424.         CALL    NEAR PTR Procedure0800
  425.         ADD    SP, 2
  426. L0385H:        MOV    SI, 00B0H
  427.         MOV    DI, 00B0H
  428.         CALL    NEAR PTR Procedure03E3
  429.         MOV    SI, 00B0H
  430.         MOV    DI, 00B0H
  431.         CALL    NEAR PTR Procedure03F2
  432.         CALL    NEAR PTR Procedure03BA
  433.         POP    AX
  434.         OR    AH, AH
  435.         JNZ    L03B6H
  436.         MOV    AX, WORD PTR [BP+4]
  437.         MOV    AH, 76
  438.         TEST    WORD PTR CS:L01A4H, 0001H
  439.         JZ     L03B4H
  440.         CALL    FAR PTR Dos3Call
  441.         JMP    SHORT L03B6H
  442. L03B4H:        INT    0021H
  443. L03B6H:        POP    DI
  444.         POP    SI
  445.         POP    BP
  446.         RET
  447. Procedure0346    ENDP
  448.  
  449.  
  450. Procedure03BA    PROC    NEAR
  451.         MOV    CX, WORD PTR D00A6H
  452.         JCXZ    L03C7H
  453.         MOV    BX, 0002H
  454.         CALL    DWORD PTR D00A4H
  455. L03C7H:        PUSH    DS
  456.         LDS    DX, DWORD PTR D0040H
  457.         MOV    AX, 2500H
  458.         TEST    WORD PTR CS:L01A4H, 0001H
  459.         JZ     L03DFH
  460.         CALL    FAR PTR Dos3Call
  461.         JMP    SHORT L03E1H
  462. L03DFH:        INT    0021H
  463. L03E1H:        POP    DS
  464.         RET
  465. Procedure03BA    ENDP
  466.  
  467.  
  468. Procedure03E3    PROC    NEAR
  469. L03E3H:        CMP    SI, DI
  470.         JAE    L03F1H
  471.         DEC    DI
  472.         DEC    DI
  473.         MOV    CX, WORD PTR [DI]
  474.         JCXZ    L03E3H
  475.         CALL    CX
  476.         JMP    SHORT L03E3H
  477. L03F1H:        RET
  478. Procedure03E3    ENDP
  479.  
  480.  
  481. Procedure03F2    PROC    NEAR
  482. L03F2H:        CMP    SI, DI
  483.         JAE    L0404H
  484.         SUB    DI, 4
  485.         MOV    AX, WORD PTR [DI]
  486.         OR    AX, WORD PTR [DI+2]
  487.         JZ     L03F2H
  488.         CALL    DWORD PTR [DI]
  489.         JMP    SHORT L03F2H
  490. L0404H:        RET
  491. Procedure03F2    ENDP
  492.  
  493.  
  494. Procedure0405    PROC    NEAR
  495. L0405H        DB    0000H
  496. Procedure0405    ENDP
  497.  
  498. Procedure0406    PROC    NEAR
  499.         PUSH    BP
  500.         MOV    BP, SP
  501.         MOV    AX, 00FCH
  502.         PUSH    AX
  503.         CALL    NEAR PTR Procedure0691
  504.         MOV    AX, 00FFH
  505.         PUSH    AX
  506.         CALL    NEAR PTR Procedure0691
  507.         MOV    SP, BP
  508.         POP    BP
  509.         RET
  510. Procedure0406    ENDP
  511.  
  512.  
  513. Procedure041B    PROC    NEAR
  514. L041BH        DB    0000H
  515. L041CH::    MOV    AX, 0002H
  516.         JMP    NEAR PTR L0627H
  517. Procedure041B    ENDP
  518.  
  519. Procedure0422    PROC    NEAR
  520.         POP    WORD PTR D009CH
  521.         MOV    AX, 0104H
  522.         MOV    CX, 0008H
  523.         CALL    NEAR PTR Procedure06C2
  524.         MOV    WORD PTR D0094H, DX
  525.         MOV    WORD PTR D0092H, AX
  526.         PUSH    DX
  527.         PUSH    AX
  528.         PUSH    WORD PTR D0022H
  529.         PUSH    DX
  530.         PUSH    AX
  531.         MOV    AX, 0104H
  532.         PUSH    AX
  533.         CALL    FAR PTR GetModuleFileName
  534.         POP    BX
  535.         POP    ES
  536.         ADD    BX, AX
  537.         MOV    BYTE PTR ES:[BX], 0
  538.         MOV    DX, 0001H
  539.         MOV    DI, 0001H
  540.         MOV    SI, 0081H
  541.         MOV    DS, WORD PTR D0054H
  542. L045CH:        LODSB
  543.         CMP    AL, 32
  544.         JZ     L045CH
  545.         CMP    AL, 9
  546.         JZ     L045CH
  547.         CMP    AL, 13
  548.         JZ     L04D8H
  549.         OR    AL, AL
  550.         JZ     L04D8H
  551.         INC    DI
  552. L046EH:        DEC    SI
  553. L046FH:        LODSB
  554.         CMP    AL, 32
  555.         JZ     L045CH
  556.         CMP    AL, 9
  557.         JZ     L045CH
  558.         CMP    AL, 13
  559.         JZ     L04D8H
  560.         OR    AL, AL
  561.         JZ     L04D8H
  562.         CMP    AL, 34
  563.         JZ     L04A8H
  564.         CMP    AL, 92
  565.         JZ     L048BH
  566.         INC    DX
  567.         JMP    SHORT L046FH
  568. L048BH:        XOR    CX, CX
  569. L048DH:        INC    CX
  570.         LODSB
  571.         CMP    AL, 92
  572.         JZ     L048DH
  573.         CMP    AL, 34
  574.         JZ     L049BH
  575.         ADD    DX, CX
  576.         JMP    SHORT L046EH
  577. L049BH:        MOV    AX, CX
  578.         SHR    CX, 1
  579.         ADC    DX, CX
  580.         TEST    AL, 1
  581.         JNZ    L046FH
  582.         JMP    SHORT L04A8H
  583. L04A7H:        DEC    SI
  584. L04A8H:        LODSB
  585.         CMP    AL, 13
  586.         JZ     L04D8H
  587.         OR    AL, AL
  588.         JZ     L04D8H
  589.         CMP    AL, 34
  590.         JZ     L046FH
  591.         CMP    AL, 92
  592.         JZ     L04BCH
  593.         INC    DX
  594.         JMP    SHORT L04A8H
  595. L04BCH:        XOR    CX, CX
  596. L04BEH:        INC    CX
  597.         LODSB
  598.         CMP    AL, 92
  599.         JZ     L04BEH
  600.         CMP    AL, 34
  601.         JZ     L04CCH
  602.         ADD    DX, CX
  603.         JMP    SHORT L04A7H
  604. L04CCH:        MOV    AX, CX
  605.         SHR    CX, 1
  606.         ADC    DX, CX
  607.         TEST    AL, 1
  608.         JNZ    L04A8H
  609.         JMP    SHORT L046FH
  610. L04D8H:        PUSH    SS
  611.         POP    DS
  612.         MOV    WORD PTR D008CH, DI
  613.         ADD    DX, DI
  614.         INC    DI
  615.         SHL    DI, 1
  616.         ADD    DX, DI
  617.         INC    DX
  618.         AND    DL, -2
  619.         SUB    SP, DX
  620.         MOV    AX, SP
  621.         MOV    WORD PTR D008EH, AX
  622.         MOV    BX, AX
  623.         ADD    DI, BX
  624.         PUSH    SS
  625.         POP    ES
  626.         LDS    SI, DWORD PTR D0092H
  627.         MOV    WORD PTR SS:[BX], SI
  628.         INC    BX
  629.         INC    BX
  630.         MOV    DS, WORD PTR SS:D0054H
  631.         MOV    SI, 0081H
  632.         JMP    SHORT L050CH
  633. L0509H:        XOR    AX, AX
  634.         STOSB
  635. L050CH:        LODSB
  636.         CMP    AL, 32
  637.         JZ     L050CH
  638.         CMP    AL, 9
  639.         JZ     L050CH
  640.         CMP    AL, 13
  641.         JZ     L0595H
  642.         OR    AL, AL
  643.         JZ     L0595H
  644.         MOV    WORD PTR SS:[BX], DI
  645.         INC    BX
  646.         INC    BX
  647. L0522H:        DEC    SI
  648. L0523H:        LODSB
  649.         CMP    AL, 32
  650.         JZ     L0509H
  651.         CMP    AL, 9
  652.         JZ     L0509H
  653.         CMP    AL, 13
  654.         JZ     L0592H
  655.         OR    AL, AL
  656.         JZ     L0592H
  657.         CMP    AL, 34
  658.         JZ     L055FH
  659.         CMP    AL, 92
  660.         JZ     L053FH
  661.         STOSB
  662.         JMP    SHORT L0523H
  663. L053FH:        XOR    CX, CX
  664. L0541H:        INC    CX
  665.         LODSB
  666.         CMP    AL, 92
  667.         JZ     L0541H
  668.         CMP    AL, 34
  669.         JZ     L0551H
  670.         MOV    AL, 92
  671.         REP STOSB
  672.         JMP    SHORT L0522H
  673. L0551H:        MOV    AL, 92
  674.         SHR    CX, 1
  675.         REP STOSB
  676.         JAE    L055FH
  677.         MOV    AL, 34
  678.         STOSB
  679.         JMP    SHORT L0523H
  680. L055EH:        DEC    SI
  681. L055FH:        LODSB
  682.         CMP    AL, 13
  683.         JZ     L0592H
  684.         OR    AL, AL
  685.         JZ     L0592H
  686.         CMP    AL, 34
  687.         JZ     L0523H
  688.         CMP    AL, 92
  689.         JZ     L0573H
  690.         STOSB
  691.         JMP    SHORT L055FH
  692. L0573H:        XOR    CX, CX
  693. L0575H:        INC    CX
  694.         LODSB
  695.         CMP    AL, 92
  696.         JZ     L0575H
  697.         CMP    AL, 34
  698.         JZ     L0585H
  699.         MOV    AL, 92
  700.         REP STOSB
  701.         JMP    SHORT L055EH
  702. L0585H:        MOV    AL, 92
  703.         SHR    CX, 1
  704.         REP STOSB
  705.         JAE    L0523H
  706.         MOV    AL, 34
  707.         STOSB
  708.         JMP    SHORT L055FH
  709. L0592H:        XOR    AX, AX
  710.         STOSB
  711. L0595H:        PUSH    SS
  712.         POP    DS
  713.         MOV    WORD PTR [BX], 0000H
  714.         JMP    WORD PTR D009CH
  715. L059FH        DB    0000H
  716. Procedure0422    ENDP
  717.  
  718. Procedure05A0    PROC    NEAR
  719.         PUSH    BP
  720.         MOV    BP, SP
  721.         PUSH    DS
  722.         CALL    FAR PTR GetDosEnvironment
  723.         OR    AX, AX
  724.         JZ     L05AFH
  725.         MOV    DX, AX
  726. L05AFH:        MOV    BX, DX
  727.         MOV    ES, DX
  728.         XOR    AX, AX
  729.         XOR    SI, SI
  730.         XOR    DI, DI
  731.         MOV    CX, 0FFFFH
  732.         OR    BX, BX
  733.         JZ     L05CEH
  734.         CMP    BYTE PTR ES:D0000H, 0
  735.         JZ     L05CEH
  736. L05C8H:        REPNE SCASB
  737.         INC    SI
  738.         SCASB
  739.         JNZ    L05C8H
  740. L05CEH:        MOV    AX, DI
  741.         INC    AX
  742.         AND    AL, -2
  743.         INC    SI
  744.         MOV    DI, SI
  745.         SHL    SI, 1
  746.         MOV    CX, 0009H
  747.         CALL    NEAR PTR Procedure06C2
  748.         PUSH    AX
  749.         MOV    AX, SI
  750.         CALL    NEAR PTR Procedure06C2
  751.         MOV    WORD PTR D0090H, AX
  752.         PUSH    ES
  753.         PUSH    DS
  754.         POP    ES
  755.         POP    DS
  756.         MOV    CX, DI
  757.         MOV    BX, AX
  758.         XOR    SI, SI
  759.         POP    DI
  760.         DEC    CX
  761.         JCXZ    L061BH
  762. L05F5H:        MOV    AX, WORD PTR [SI]
  763.         CMP    AX, WORD PTR SS:D0032H
  764.         JNZ    L060EH
  765.         PUSH    CX
  766.         PUSH    SI
  767.         PUSH    DI
  768.         MOV    DI, 0032H
  769.         MOV    CX, 0006H
  770.         REPE CMPSW
  771.         POP    DI
  772.         POP    SI
  773.         POP    CX
  774.         JZ     L0613H
  775. L060EH:        MOV    WORD PTR ES:[BX], DI
  776.         INC    BX
  777.         INC    BX
  778. L0613H:        LODSB
  779.         STOSB
  780.         OR    AL, AL
  781.         JNZ    L0613H
  782.         LOOP    L05F5H
  783. L061BH:        MOV    WORD PTR ES:[BX], CX
  784.         POP    DS
  785.         POP    BP
  786.         RET
  787. Procedure05A0    ENDP
  788.  
  789.  
  790. Procedure0621    PROC    NEAR
  791. L0621H        DB    0000H
  792.         PUSH    SS
  793.         POP    DS
  794.         MOV    AX, 0003H
  795. L0627H::    PUSH    AX
  796.         PUSH    AX
  797.         CALL    NEAR PTR Procedure0406
  798.         CALL    NEAR PTR Procedure0691
  799.         CALL    NEAR PTR Procedure0666
  800.         XOR    BX, BX
  801.         OR    AX, AX
  802.         JZ     L0655H
  803.         MOV    DI, AX
  804.         MOV    AX, 0009H
  805.         CMP    BYTE PTR [DI], 77
  806.         JNZ    L0645H
  807.         MOV    AX, 000FH
  808. L0645H:        ADD    DI, AX
  809.         PUSH    DI
  810.         PUSH    DS
  811.         POP    ES
  812.         MOV    AL, 13
  813.         MOV    CX, 0022H
  814.         REPNE SCASB
  815.         MOV    BYTE PTR [DI-1], BL
  816.         POP    AX
  817. L0655H:        PUSH    BX
  818.         PUSH    DS
  819.         PUSH    AX
  820.         CALL    FAR PTR FatalAppExit
  821.         MOV    AX, 00FFH
  822.         PUSH    AX
  823.         CALL    FAR PTR FatalExit
  824. Procedure0621    ENDP
  825.  
  826. Procedure0666    PROC    NEAR
  827.         PUSH    BP
  828.         MOV    BP, SP
  829.         PUSH    SI
  830.         PUSH    DI
  831.         PUSH    DS
  832.         POP    ES
  833.         MOV    DX, WORD PTR [BP+4]
  834.         MOV    SI, 00E2H
  835. L0673H:        LODSW
  836.         CMP    AX, DX
  837.         JZ     L0688H
  838.         INC    AX
  839.         XCHG    SI, AX
  840.         JZ     L0688H
  841.         XCHG    DI, AX
  842.         XOR    AX, AX
  843.         MOV    CX, 0FFFFH
  844.         REPNE SCASB
  845.         MOV    SI, DI
  846.         JMP    SHORT L0673H
  847. L0688H:        XCHG    SI, AX
  848.         POP    DI
  849.         POP    SI
  850.         MOV    SP, BP
  851.         POP    BP
  852.         RET    0002H
  853. Procedure0666    ENDP
  854.  
  855.  
  856. Procedure0691    PROC    NEAR
  857.         PUSH    BP
  858.         MOV    BP, SP
  859.         PUSH    DI
  860.         CMP    WORD PTR D00A0H, 0
  861.         JZ     L06BAH
  862.         PUSH    WORD PTR [BP+4]
  863.         CALL    NEAR PTR Procedure0666
  864.         OR    AX, AX
  865.         JZ     L06BAH
  866.         XCHG    DX, AX
  867.         MOV    DI, DX
  868.         XOR    AX, AX
  869.         MOV    CX, 0FFFFH
  870.         REPNE SCASB
  871.         NOT    CX
  872.         DEC    CX
  873.         MOV    BX, WORD PTR D005EH
  874.         CALL    NEAR PTR Procedure0805
  875. L06BAH:        POP    DI
  876.         MOV    SP, BP
  877.         POP    BP
  878.         RET    0002H
  879. Procedure0691    ENDP
  880.  
  881.  
  882. Procedure06C1    PROC    NEAR
  883. L06C1H        DB    0000H
  884. Procedure06C1    ENDP
  885.  
  886. Procedure06C2    PROC    NEAR
  887.         PUSH    BP
  888.         MOV    BP, SP
  889.         PUSH    BX
  890.         PUSH    ES
  891.         PUSH    CX
  892.         MOV    CX, 1000H
  893.         XCHG    CX, WORD PTR D009EH
  894.         PUSH    CX
  895.         PUSH    AX
  896.         CALL    NEAR PTR Procedure080C
  897.         POP    BX
  898.         POP    WORD PTR D009EH
  899.         POP    CX
  900.         MOV    DX, DS
  901.         OR    AX, AX
  902.         JZ     L06E4H
  903.         POP    ES
  904.         POP    BX
  905.         JMP    SHORT L06E9H
  906. L06E4H:        MOV    AX, CX
  907.         JMP    NEAR PTR L0627H
  908. L06E9H:        MOV    SP, BP
  909.         POP    BP
  910.         RET
  911. Procedure06C2    ENDP
  912.  
  913.  
  914. Procedure06ED    PROC    NEAR
  915. L06EDH        DB    0000H
  916.         PUSH    CX
  917.         PUSH    DI
  918.         TEST    BYTE PTR [BX+2], 1
  919.         JZ     L0759H
  920.         CALL    NEAR PTR Procedure07E0
  921.         MOV    DI, SI
  922.         MOV    AX, WORD PTR [SI]
  923.         TEST    AL, 1
  924.         JZ     L0704H
  925.         SUB    CX, AX
  926.         DEC    CX
  927. L0704H:        INC    CX
  928.         INC    CX
  929.         MOV    SI, WORD PTR [BX+4]
  930.         OR    SI, SI
  931.         JZ     L0759H
  932.         ADD    CX, SI
  933.         JAE    L071AH
  934.         XOR    AX, AX
  935.         MOV    DX, 0FFF0H
  936.         JCXZ    L0748H
  937.         JMP    SHORT L0759H
  938. L071AH:        PUSH    SS
  939.         POP    ES
  940.         MOV    AX, WORD PTR D009EH
  941.         CMP    AX, 1000H
  942.         JZ     L073BH
  943.         MOV    DX, 8000H
  944. L0728H:        CMP    DX, AX
  945.         JB     L0732H
  946.         SHR    DX, 1
  947.         JNZ    L0728H
  948.         JMP    SHORT L0754H
  949. L0732H:        CMP    DX, 8
  950.         JB     L0754H
  951.         SHL    DX, 1
  952.         MOV    AX, DX
  953. L073BH:        DEC    AX
  954.         MOV    DX, AX
  955.         ADD    AX, CX
  956.         JAE    L0744H
  957.         XOR    AX, AX
  958. L0744H:        NOT    DX
  959.         AND    AX, DX
  960. L0748H:        PUSH    DX
  961.         CALL    NEAR PTR Procedure077A
  962.         POP    DX
  963.         JAE    L075CH
  964.         CMP    DX, -16
  965.         JZ     L0759H
  966. L0754H:        MOV    AX, 0010H
  967.         JMP    SHORT L073BH
  968. L0759H:        STC
  969.         JMP    SHORT L0777H
  970. L075CH:        MOV    DX, AX
  971.         SUB    DX, WORD PTR ES:[BX+4]
  972.         MOV    WORD PTR [BX+4], AX
  973.         MOV    WORD PTR [BX+10], DI
  974.         MOV    SI, WORD PTR [BX+12]
  975.         DEC    DX
  976.         MOV    WORD PTR [SI], DX
  977.         INC    DX
  978.         ADD    SI, DX
  979.         MOV    WORD PTR [SI], 0FFFEH
  980.         MOV    WORD PTR [BX+12], SI
  981. L0777H:        POP    DI
  982.         POP    CX
  983.         RET
  984. Procedure06ED    ENDP
  985.  
  986.  
  987. Procedure077A    PROC    NEAR
  988.         MOV    DX, AX
  989.         TEST    BYTE PTR [BX+2], 4
  990.         JZ     L0784H
  991.         JMP    SHORT L07D5H
  992. L0784H:        PUSH    DX
  993.         PUSH    CX
  994.         PUSH    BX
  995.         MOV    SI, WORD PTR [BX+6]
  996.         MOV    BX, WORD PTR CS:L01A4H
  997.         XOR    CX, CX
  998.         OR    DX, DX
  999.         JNZ    L079CH
  1000.         TEST    BX, 0010H
  1001.         JNZ    L07DBH
  1002.         INC    CX
  1003. L079CH:        MOV    AX, 0022H
  1004.         TEST    BX, 0001H
  1005.         JNZ    L07A8H
  1006.         MOV    AX, 0020H
  1007. L07A8H:        PUSH    SI
  1008.         PUSH    CX
  1009.         PUSH    DX
  1010.         PUSH    AX
  1011.         CALL    FAR PTR GlobalRealloc
  1012.         OR    AX, AX
  1013.         JZ     L07DBH
  1014.         CMP    AX, SI
  1015.         JNZ    L07D5H
  1016.         PUSH    SI
  1017.         CALL    FAR PTR GlobalSize
  1018.         OR    DX, AX
  1019.         JZ     L07D5H
  1020.         POP    BX
  1021.         POP    CX
  1022.         POP    DX
  1023.         MOV    AX, DX
  1024.         TEST    BYTE PTR [BX+2], 4
  1025.         JZ     L07D2H
  1026.         DEC    DX
  1027.         MOV    WORD PTR [BX-2], DX
  1028. L07D2H:        CLC
  1029.         JMP    SHORT L07DFH
  1030. L07D5H:        MOV    AX, 0012H
  1031.         JMP    NEAR PTR L0627H
  1032. L07DBH:        POP    BX
  1033.         POP    CX
  1034.         POP    DX
  1035.         STC
  1036. L07DFH:        RET
  1037. Procedure077A    ENDP
  1038.  
  1039.  
  1040. Procedure07E0    PROC    NEAR
  1041.         PUSH    DI
  1042.         MOV    SI, WORD PTR [BX+10]
  1043.         CMP    SI, WORD PTR [BX+12]
  1044.         JNZ    L07ECH
  1045.         MOV    SI, WORD PTR [BX+8]
  1046. L07ECH:        LODSW
  1047.         CMP    AX, -2
  1048.         JZ     L07FAH
  1049.         MOV    DI, SI
  1050.         AND    AL, -2
  1051.         ADD    SI, AX
  1052.         JMP    SHORT L07ECH
  1053. L07FAH:        DEC    DI
  1054.         DEC    DI
  1055.         MOV    SI, DI
  1056.         POP    DI
  1057.         RET
  1058. Procedure07E0    ENDP
  1059.  
  1060.  
  1061. Procedure0800    PROC    NEAR
  1062.         PUSH    BP
  1063.         MOV    BP, SP
  1064.         POP    BP
  1065.         RET
  1066. Procedure0800    ENDP
  1067.  
  1068.  
  1069. Procedure0805    PROC    NEAR
  1070.         MOV    AX, 0014H
  1071.         JMP    NEAR PTR L0627H
  1072. L080BH        DB    0000H
  1073. Procedure0805    ENDP
  1074.  
  1075. Procedure080C    PROC    NEAR
  1076.         PUSH    BP
  1077.         MOV    BP, SP
  1078.         SUB    SP, 4
  1079.         MOV    AX, 0FFFFH
  1080.         PUSH    AX
  1081.         CALL    FAR PTR LockSegment
  1082.         MOV    AX, 0020H
  1083.         PUSH    AX
  1084.         CMP    WORD PTR [BP+4], 0
  1085.         JZ     L082AH
  1086.         MOV    AX, WORD PTR [BP+4]
  1087.         JMP    SHORT L082DH
  1088. L082AH:        MOV    AX, 0001H
  1089. L082DH:        PUSH    AX
  1090.         CALL    FAR PTR LocalAlloc
  1091.         MOV    WORD PTR [BP-2], AX
  1092.         MOV    AX, 0FFFFH
  1093.         PUSH    AX
  1094.         CALL    FAR PTR UnlockSegment
  1095.         MOV    AX, WORD PTR [BP-2]
  1096.         MOV    SP, BP
  1097.         POP    BP
  1098.         RET
  1099. Procedure080C    ENDP
  1100.  
  1101.  
  1102. Procedure0846    PROC    NEAR
  1103.         PUSH    BP
  1104.         MOV    BP, SP
  1105.         PUSH    WORD PTR [BP+4]
  1106.         CALL    FAR PTR LocalFree
  1107.         MOV    SP, BP
  1108.         POP    BP
  1109.         RET
  1110. Procedure0846    ENDP
  1111.  
  1112.  
  1113. Procedure0855    PROC    NEAR
  1114.         NOP
  1115.         PUSH    BP
  1116.         MOV    BP, SP
  1117.         SUB    SP, 4
  1118.         CMP    WORD PTR [BP+4], 0
  1119.         JNZ    L086EH
  1120.         PUSH    WORD PTR [BP+6]
  1121.         CALL    NEAR PTR Procedure080C
  1122.         ADD    SP, 2
  1123.         JMP    SHORT L08A2H
  1124.         NOP
  1125. L086EH:        MOV    AX, 0FFFFH
  1126.         PUSH    AX
  1127.         CALL    FAR PTR LockSegment
  1128.         PUSH    WORD PTR [BP+4]
  1129.         CMP    WORD PTR [BP+6], 0
  1130.         JZ     L0886H
  1131.         MOV    AX, WORD PTR [BP+6]
  1132.         JMP    SHORT L0889H
  1133.         NOP
  1134. L0886H:        MOV    AX, 0001H
  1135. L0889H:        PUSH    AX
  1136.         MOV    AX, 0062H
  1137.         PUSH    AX
  1138.         CALL    FAR PTR LocalRealloc
  1139.         MOV    WORD PTR [BP-2], AX
  1140.         MOV    AX, 0FFFFH
  1141.         PUSH    AX
  1142.         CALL    FAR PTR UnlockSegment
  1143.         MOV    AX, WORD PTR [BP-2]
  1144. L08A2H:        MOV    SP, BP
  1145.         POP    BP
  1146.         RET
  1147. Procedure0855    ENDP
  1148.  
  1149.  
  1150. Procedure08A6    PROC    NEAR
  1151.         PUSH    BP
  1152.         MOV    BP, SP
  1153.         PUSH    WORD PTR [BP+4]
  1154.         CALL    FAR PTR LocalSize
  1155.         MOV    SP, BP
  1156.         POP    BP
  1157.         RET
  1158. Procedure08A6    ENDP
  1159.  
  1160.  
  1161. Procedure08B5    PROC    NEAR
  1162.         NOP
  1163. Procedure08B5    ENDP
  1164.  
  1165.         END    L01ACH